/**
 * Copyright 2016 vip.com.
 * <p>
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
 * the License. You may obtain a copy of the License at
 * <p>
 * http://www.apache.org/licenses/LICENSE-2.0
 * <p>
 * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
 * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
 * specific language governing permissions and limitations under the License.
 * </p>
 **/

package spring.cloud.tasks.tasks_manager.database.service.impl;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import spring.cloud.tasks.tasks_manager.database.entity.StatisticsDto;
import spring.cloud.tasks.tasks_manager.database.repository.StatisticsDtoRepository;
import spring.cloud.tasks.tasks_manager.database.service.StatisticsDtoService;

@Service
public class StatisticsDtoServiceImpl implements StatisticsDtoService {

    @Autowired
    private StatisticsDtoRepository statisticsDtoRepository;

    /*
     * @Transactional is not necessarry for the single atomic CRUD statement for better performance, but you still have
     * to take care of @Transactional for multi-statements scenario. if read only,please config as
     * "@Transactional(readOnly = true)",otherwise "@Transactional"
     */
    @Transactional
    @Override
    public int deleteByPrimaryKey(Integer id) {
        return statisticsDtoRepository.deleteByPrimaryKey(id);
    }

    /*
     * @Transactional is not necessarry for the single atomic CRUD statement for better performance, but you still have
     * to take care of @Transactional for multi-statements scenario. if read only,please config as
     * "@Transactional(readOnly = true)",otherwise "@Transactional"
     */
    @Transactional(readOnly = true)
    @Override
    public StatisticsDto findByPrimaryKey(Integer id) {
        return statisticsDtoRepository.selectByPrimaryKey(id);
    }

    /*
     * @Transactional is not necessarry for the single atomic CRUD statement for better performance, but you still have
     * to take care of @Transactional for multi-statements scenario. if read only,please config as
     * "@Transactional(readOnly = true)",otherwise "@Transactional"
     */
    @Transactional
    @Override
    public int updateByPrimaryKey(StatisticsDto statistics) {
        return statisticsDtoRepository.updateByPrimaryKey(statistics);
    }

    /*
     * @Transactional is not necessarry for the single atomic CRUD statement for better performance, but you still have
     * to take care of @Transactional for multi-statements scenario. if read only,please config as
     * "@Transactional(readOnly = true)",otherwise "@Transactional"
     */
    @Transactional
    @Override
    public int updateByPrimaryKeySelective(StatisticsDto statistics) {
        return statisticsDtoRepository.updateByPrimaryKeySelective(statistics);
    }

    /*
     * @Transactional is not necessarry for the single atomic CRUD statement for better performance, but you still have
     * to take care of @Transactional for multi-statements scenario. if read only,please config as
     * "@Transactional(readOnly = true)",otherwise "@Transactional"
     */
    @Transactional
    @Override
    public int create(StatisticsDto statistics) {
        return statisticsDtoRepository.insert(statistics);
    }

    /*
     * @Transactional is not necessarry for the single atomic CRUD statement for better performance, but you still have
     * to take care of @Transactional for multi-statements scenario. if read only,please config as
     * "@Transactional(readOnly = true)",otherwise "@Transactional"
     */
    @Transactional
    @Override
    public int createSelective(StatisticsDto statistics) {
        return statisticsDtoRepository.insertSelective(statistics);
    }

    /*
     * @Transactional is not necessarry for the single atomic CRUD statement for better performance, but you still have
     * to take care of @Transactional for multi-statements scenario. if read only,please config as
     * "@Transactional(readOnly = true)",otherwise "@Transactional"
     */
    @Transactional(readOnly = true)
    @Override
    public int selectCount(StatisticsDto statistics) {
        return statisticsDtoRepository.selectCount(statistics);
    }

    @Transactional(readOnly = true)
    @Override
    public StatisticsDto findStatisticsByNameAndZkList(String name, String zklist) {
        return statisticsDtoRepository.findStatisticsByNameAndZkList(name, zklist);
    }

}
